package socratesteam.view.managedBean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import socratesteam.model.dominio.Usuario;
import socratesteam.model.negocio.UsuarioImpl;
import socratesteam.view.common.constantes.LoginConstants;

@ManagedBean(name = "loginBean")
@SessionScoped
public class LoginBean extends Usuario {

	private String mensaje;

	public String getMensaje() {
		return mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}

	UsuarioImpl getUsuarioImpl = new UsuarioImpl();
	Usuario oUsuario = new Usuario();

	public String login() {

		String mensajeSalida = "principal";

		try {
			oUsuario.setUsuario(getUsuario());
			oUsuario.setContrasenia(getContrasenia());
			oUsuario = getUsuarioImpl.datosUsuario(oUsuario);
		} catch (Exception e) {
			e.printStackTrace();
		}

		if (oUsuario.getCodigo() > 0) {

			HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);

			if (session.getAttribute(LoginConstants.USUARIO) != null) {
				oUsuario.setCodigo((Integer) session.getAttribute(LoginConstants.USUARIO_ID));
				oUsuario.setUsuario((String) session.getAttribute(LoginConstants.USUARIO));
				mensajeSalida = "principal.jsfx";
				return "principal.jsfx";
			}
			session.setAttribute(LoginConstants.USUARIO_ID, oUsuario.getCodigo());
			session.setAttribute(LoginConstants.USUARIO, oUsuario.getUsuario());
			session.setAttribute(LoginConstants.USUARIO_TIPO, oUsuario.getTipoUsuario().getCodigo());

			setMensaje(null);
		} else {
			setMensaje("Usuario o Password Incorrectos!");
		}
		return mensajeSalida;
	}

	public String logout() {
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
		session.invalidate();
		return "principal";
	}

	public boolean isLoggedIn() {
		return FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(LoginConstants.USUARIO) != null;
	}

}
